<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=s, initial-scale=1.0">
  <title>Document</title>
  <script src="../vue_2.5.22.js"></script>
  <!-- 1、先引入vue.js 再引入vue-router.js -->
  <script src="../vue-router_3.0.2.js"></script>
</head>

<body>
  <!-- 
  路由使用规则：
    1、先引入vue.js 再引入vue-router.js
    2、创建路由标签
    3、创建路由占位符，填充位
    4、创建路由实例 路由规则
    5、将Vue-router规则挂载到路由实例中
 -->
  <div id="app">
    <!-- 2、创建路由标签 -->
    <router-link to='/login'>登录</router-link>
    <router-link to='/register'>注册</router-link>

    <!-- router-link 这个类似与a标签 to会被解析成href-->
    <!-- 3、创建路由占位符，填充位 -->
    <router-view></router-view>
    <!-- 当点击路由标签，组件发生切换，组件就会填充到这个位置 -->
  </div>
  <script>
    // 路由组件
    var Login = {
      template: '<h4>登录</h4>'
    }
    // router 中模板字符串反引号与引号作用一样没有什么区别
    var Register = {
      template: `
      <!-- 模板字符串如果有两个及以上的标签需要有根元素 -->
      <div>
        <h4>注册:</h4>
        <hr/>
        <!-- 嵌套路由前面需要加上父级路由 -->
        <router-link to='/register/tab1'>Tab1</router-link>
        <router-link to='/register/tab2'>Tab2</router-link>
        <router-view></router-view>
      </div>
      
      `
    }
    var Tab1 = {
      template: `
      <div>
        <h3>列表1</h3>
        <hr/>
        <router-link to='/register/tab1/li1'>li1</router-link>
        <router-link to='/register/tab2/li2'>li2</router-link>
        <router-view></router-view>
      </div>
      `
    }

    var li1 = {
      template: '<h3>li1</h3>'
    }
    var li2 = {
      template: '<h3>li2</h3>'
    }

    var Tab2 = {
      template: '<h3>列表2</h3>'
    }

    // 4、创建路由实例 路由规则
    // 注意事项： VueRouter首字母大写，带r
    const router = new VueRouter({
      // 配置路由的规则
      // routes不带r
      routes: [
        // 路由重定向 redirect 重新访问其他路径
        { path: '/', redirect: '/login' },
        { path: '/login', component: Login },
        {
          // 子路由配置路由规则时，可以不需要加上父级路由
          path: '/register',
          component: Register,
          children: [
            {
              path: 'tab1', component: Tab1,
              children: [
                { path: 'li1', component: li1 },
                { path: 'li2', component: li2 }
              ]
            },
            {
              path: 'tab2',
              component: Tab2,
              children: [
                { path: 'li1', component: li1 },
                { path: 'li2', component: li2 }
              ]
            }
          ]
        }
      ]
    })

    var vm = new Vue({
      el: '#app',
      data: {},
      // 5、将Vue-router规则挂载到路由实例中
      // router: router
      router
    })
  </script>
</body>

</html>